package bd;

/*
 * Esse arquivo é parte do Software new Recicle
 * 
 * Copyright (C) 2011-$AnoCorrente$ Eduardo Moreira Barbosa
 * Copyright (C) 2011-$AnoCorrente$ João dos Santos Gonçalves
 * Copyright (C) 2011-$AnoCorrente$ Lucas Ximenes da Fonseca
 * 
 * new Recicle é um Software Livre: Você pode redistribuí-lo e/ou modificá-lo
 * de acordo com os termos da Licença Pública Geral GNU (GNU General Public License)
 * conforme publicada pela Free Software Foundation (FSF). Essa permissão é atribuída
 * na versão 3 da Licença, ou (na sua opinião) qualquer versão.
 * 
 * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa,
 * se não, escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301  USA
 * 
 * Se você tiver alguma dúvida e/ou quiser dar suporte ao desenvolvimento, favor entrar em
 * contato nos e-mails <barbosa.edrd@gmail.com>, <john.jsg@hotmail.com>, <lxf.lucas@gmail.com>.
 */


import empresa.Empresa;
import java.sql.SQLException;

public class BancoEmpresa {
                

    private String comando;
    private String pesquisa;
    private String Id = "";
    
    
    /**
     * Cadastro de Empresas
     * 
     * @exception       Exceção SQL
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */

    public void cadastrar(){
        comando = "Insert into Ervilha.Empresa (DataContato, Nome, Endereco, " +
                                     "Bairro, Cep, Cidade, Estado, Email, Telefone, " +
                                     "NumeroEmpregados, TempoAtuacao, Cnpj)" + 
                                     "Values ('" + Empresa.getRegistro().getDataContato() + "'" +
                                     ",'" + Empresa.getRegistro().getNome() + "'" +
                                     ",'" + Empresa.getRegistro().getEndereco() + "'" +
                                     ",'" + Empresa.getRegistro().getBairro() + "'" +
                                     ",'" + Empresa.getRegistro().getCep() + "'" +
                                     ",'" + Empresa.getRegistro().getCidade() + "'" +
                                     ",'" + Empresa.getRegistro().getEstado() + "'" +
                                     ",'" + Empresa.getRegistro().getEmail() + "'" +                                    
                                     ",'" + Empresa.getRegistro().getTelefone() + "'" +                                    
                                     ",'" + Empresa.getRegistro().getNumeroEmpregados() + "'" +                                     
                                     ",'" + Empresa.getRegistro().getTempoAtuacao() + "'" +  
                                     ",'" + Empresa.getRegistro().getCnpj() + "')";
        try{            
            BancoDeDados.STATEMENT = BancoDeDados.CONNECTION.createStatement();
            try{                        
                BancoDeDados.STATEMENT.executeUpdate(comando);                                          
            } catch (SQLException sQLException){
                    sQLException.printStackTrace();
                }
            } catch (SQLException sQLException) {
                sQLException.printStackTrace();
            }
    }
    
    /**
     * Remoção de Empresas
     * 
     * @param comparar  Empresa a ser excluida do Banco de dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void apagar(String comparar){
        try{
            comando = "Delete from Ervilha.Empresa where Nome = '" + comparar + "'";
            BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(comando);
            BancoDeDados.PREPAREDSTATEMENT.execute();
            BancoDeDados.PREPAREDSTATEMENT.close();
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }        
    }
    
    /**
     * Pesquisar no Banco de Dados
     * 
     * @param comparar  Empresa a ser pesquisada no Banco de Dados
     * @return          Empresa se existir no Banco de Dados ou null se não existir
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String pesquisarBanco(String comparar){
        String sql = "Select * from Ervilha.Empresa";
        
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.RESULTSET = BancoDeDados.PREPAREDSTATEMENT.executeQuery();
           while (BancoDeDados.RESULTSET.next()){
               String dataContato = BancoDeDados.RESULTSET.getString("DataContato");
               String nome = BancoDeDados.RESULTSET.getString("Nome");
               String endereco = BancoDeDados.RESULTSET.getString("Endereco");
               String bairro = BancoDeDados.RESULTSET.getString("Bairro");
               String cep = BancoDeDados.RESULTSET.getString("Cep");
               String cidade = BancoDeDados.RESULTSET.getString("Cidade");
               String estado = BancoDeDados.RESULTSET.getString("Estado");
               String email = BancoDeDados.RESULTSET.getString("Email");
               String telefone = BancoDeDados.RESULTSET.getString("Telefone");
               String numeroEmpregados = BancoDeDados.RESULTSET.getString("NumeroEmpregados");
               String tempoAtuacao = BancoDeDados.RESULTSET.getString("TempoAtuacao");
               String cnpj = BancoDeDados.RESULTSET.getString("Cnpj");
               
               pesquisa = dataContato + "#" + nome + "#" + 
                                 endereco + "#" + bairro + "#" + 
                                 cep + "#" + cidade + "#" + 
                                estado + "#" + email + "#" + telefone + "#" +
                                numeroEmpregados + "#" + tempoAtuacao + "#" + cnpj;
               
               if (nome.equals(comparar)){
                 return nome;
               }
          }
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
        return null;
    }
    
    /**
     * Retornar Pesquisa no Banco de Dados
     * 
     * @see             Método pesquisarBanco
     * @return          Todos os dados de uma Empresa
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String retornarBanco(){
        return pesquisa;
    }
    
    /**
     * Pesquisar as Empresas
     * 
     * @return          null se não existir Empresas no Banco de Dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String pesquisarId(){
        String sql = "Select * from Ervilha.Empresa";        
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.RESULTSET = BancoDeDados.PREPAREDSTATEMENT.executeQuery();
           while (BancoDeDados.RESULTSET.next()){
               String nome = BancoDeDados.RESULTSET.getString("Nome");             
               Id += nome + "#";
          }
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
        return null;
    }
    
    /**
     * Retornar as Empresas
     * 
     * @see             Método pesquisarId
     * @return          Todos as Empresas
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String[] retornarId(){
        String[] ss = Id.split("#");
        return ss;
    }
    
    /**
     * Alterar Empresa
     * 
     * @see             Classe Empresa
     * @param registro  Novas características da Empresa
     * @param pesquisa  Empresa a ser modificado no Banco de Dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void alterar(Empresa registro, String pesquisa){
        String sql = "Update Ervilha.Empresa set DataContato = ?, Nome = ?, Endereco = ?," +
                                                 "Bairro = ?, Cep = ?, Cidade = ?, Estado = ?," +
                                                 "Email = ?, Telefone = ?, NumeroEmpregados = ?," +
                                                 "TempoAtuacao = ?, Cnpj = ? where Nome = ?";
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.PREPAREDSTATEMENT.setString(1, registro.getDataContato());
           BancoDeDados.PREPAREDSTATEMENT.setString(2, registro.getNome());
           BancoDeDados.PREPAREDSTATEMENT.setString(3, registro.getEndereco());
           BancoDeDados.PREPAREDSTATEMENT.setString(4, registro.getBairro());
           BancoDeDados.PREPAREDSTATEMENT.setString(5, registro.getCep());
           BancoDeDados.PREPAREDSTATEMENT.setString(6, registro.getCidade());
           BancoDeDados.PREPAREDSTATEMENT.setString(7, registro.getEstado());
           BancoDeDados.PREPAREDSTATEMENT.setString(8, registro.getEmail());
           BancoDeDados.PREPAREDSTATEMENT.setString(9, registro.getTelefone());
           BancoDeDados.PREPAREDSTATEMENT.setString(10, registro.getNumeroEmpregados());
           BancoDeDados.PREPAREDSTATEMENT.setString(11, registro.getTempoAtuacao());
           BancoDeDados.PREPAREDSTATEMENT.setString(12, registro.getCnpj());
           BancoDeDados.PREPAREDSTATEMENT.setString(13, pesquisa);
           BancoDeDados.PREPAREDSTATEMENT.execute();
           BancoDeDados.PREPAREDSTATEMENT.close();           
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
    }
    
}
